package com.hospital.register.core.service;

import com.hospital.register.dto.core.common.HospitalPageDto;
import com.hospital.register.model.core.Hospital;
import com.hospital.register.vo.core.admin.HospitalPageVo;
import com.hospital.register.vo.core.common.HospitalQueryVo;
import org.springframework.data.domain.Page;

/**
 * 处理医院相关业务
 *
 * @author 刘逸晖
 */
public interface HospitalService {

    /**
     * 新增医院
     *
     * @param hospital 医院信息
     * @return 是否新增成功
     */
    boolean insert(Hospital hospital);

    /**
     * 根据编号更新医院信息
     *
     * @param hospital 新数据
     * @return 是否更新成功
     */
    boolean updateByHoscode(Hospital hospital);

    /**
     * 根据编码检查医院是否存在
     *
     * @param hoscode 医院编码
     * @return 对应医院是否存在
     */
    boolean existsByHoscode(String hoscode);

    /**
     * 根据编号查医院
     *
     * @param hoscode 医院编号
     * @return 医院信息
     */
    HospitalQueryVo findByHoscode(String hoscode);

    /**
     * 分页查询医院信息
     *
     * @param dto 条件
     * @return 结果列表
     */
    Page<HospitalPageVo> findPage(HospitalPageDto dto);

    /**
     * 更新医院状态
     *
     * @param id     医院的 id
     * @param status 要更新到的状态值
     */
    boolean updateStatusById(String id, Byte status);

    /**
     * 根据 id 查询医院信息
     *
     * @param id 医院的 id
     * @return 医院信息
     */
    HospitalQueryVo findById(String id);

}
